using System;
using System.Drawing;

namespace SBPweb.Modules.Smartparts
{
    /// <summary>
    /// The IDockingSmartpart interface inherits from the ISmartpart interface.
    /// This interface represents a dockable smartpart.
    /// </summary>
	public interface IDockingSmartpart : ISmartpart
    {
        /// <summary>
        /// Gets or sets the value indicating whether the smartpart is Tabbed, Docked or Float.
        /// </summary>
        AppearanceStyle InitialAppearanceStyle
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the value indicating whether the smartpart is Tabbed, Docked or Float.
        /// </summary>
        AppearanceStyle CurrentAppearanceStyle
        {
            get;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be closed or not.
        /// </summary>
        bool AllowClose
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be collapsed or not.
        /// </summary>
        bool AllowCollapse
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be docked at the bottom or not.
        /// </summary>
        bool AllowDockBottom
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be docked center or not.
        /// </summary>
        bool AllowDockCenter
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be docked left or not.
        /// </summary>
        bool AllowDockLeft
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be docked right or not.
        /// </summary>
        bool AllowDockRight
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to be docked to the top or not.
        /// </summary>
        bool AllowDockTop
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart allowing to float or not.
        /// </summary>
        bool AllowFloat
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart to be collapsed or not.
        /// </summary>
        bool Collapsed
        {
            get;
            set;
        }

        ///// <summary>
        ///// Gets or sets the smartpart's size when it's docked.
        ///// </summary>
        //int DockedSize
        //{
        //    get;
        //    set;
        //}

        /// <summary>
        /// Gets or sets the smartpart's location when it's floating.
        /// </summary>
        Point FloatingLocation
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart's size when it's floating.
        /// </summary>
        Size FloatingSize
        {
            get;
            set;
        }


        /// <summary>
        /// Gets or sets the smartpart's caption.
        /// </summary>
        string Caption
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart to be hidden only if the close was hit or not.
        /// </summary>
		bool HideOnlyWhenClose
		{
			get;
			set;
		}

        /// <summary>
        /// Gets or sets the smartpart to act as a window or not.
        /// </summary>
        bool IsShowInWindowMenu
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the smartpart's border style.
        /// </summary>
        BorderStyle BorderStyle
        {
            get;
            set;
        }

    }

    /// <summary>
    /// This enumeration contains the available appearance styles.
    /// </summary>
    public enum AppearanceStyle
    {
        /// <summary>
        /// The ISmartpart is tabbed.
        /// </summary>
        Tabbed,
        /// <summary>
        /// The ISmartpart is docked.
        /// </summary>
        Docked,
        /// <summary>
        /// The ISmartpart is floating.
        /// </summary>
        Float,

		/// <summary>
		/// The ISmartpart's apperance is unknown
		/// </summary>
        Unknown
    }

    ///
    /// <summary>
    /// Specifies the border styles for a form.
    /// </summary>
    public enum BorderStyle
    {
        /// <summary>
        /// No border.
        /// </summary>
        None = 0,
        /// <summary>
        /// A fixed, single-line border.
        /// </summary>
        FixedSingle = 1,
        /// <summary>
        /// A fixed, three-dimensional border.
        /// </summary>
        Fixed3D = 2,
        /// <summary>
        /// A thick, fixed dialog-style border.
        /// </summary>
        FixedDialog = 3,
        /// <summary>
        ///  A resizable border.
        /// </summary>
        Sizable = 4,
        /// <summary>
        /// A tool window border that is not resizable. A tool window does not appear
        /// in the taskbar or in the window that appears when the user presses ALT+TAB.
        /// Although forms that specify System.Windows.Forms.FormBorderStyle.FixedToolWindow
        /// typically are not shown in the taskbar, you must also ensure that the System.Windows.Forms.Form.ShowInTaskbar
        /// property is set to false, since its default value is true.
        /// </summary>
        FixedToolWindow = 5,
        /// <summary>
        /// A resizable tool window border. A tool window does not appear in the taskbar
        /// or in the window that appears when the user presses ALT+TAB.
        /// </summary>
        SizableToolWindow = 6,
    }
}
